﻿using GalaSoft.MvvmLight.Command;
using JiveMessenger.Models;
using JiveMessenger.Utilities;
using JmShared;
using System;
using System.ComponentModel;
using System.Windows.Data;

namespace JiveMessenger.ViewModels
{
    public interface IViewModelContactList
    {
        RelayCommand<IContact> AddContactCommand { get; set; }
        RelayCommand OpenCreateGroupWindowCommand { get; set; }
        RelayCommand OpenAddContactWindowCommand { get; set; }
        RelayCommand<object> InviteContactToGroupCommand { get; set; }
        RelayCommand<object> LeaveGroupCommand { get; set; }
        RelayCommand<object> BlockGroupCommand { get; set; }
        RelayCommand<IContact> OpenPmCommand { get; set; }
        RelayCommand OpenNotificationsCommand { get; set; }
        RelayCommand<IContact> IgnoreContactCommand { get; set; }
        RelayCommand<IChatGroup> OpenGroupCommand { get; set; }
        RelayCommand<IChatGroup> ManageGroupCommand { get; set; }
        RelayCommand<IChatGroup> SetGroupExpandedCommand { get; set; }
        RelayCommand<IChatGroup> SetGroupCollapsedCommand { get; set; }
        FilteredObservableCollection<IContact> Contacts { get; set; }
        IContact CurrentUser { get; set; }
        CollectionViewSource ContactsViewSource { get; set; }
        ClientStatus ManualClientStatus { get; set; }
        void AddOrUpdateContact(JmShared.UserInfo user, bool processEmoticonAndAvatar);
        void SetContactAsOffline(string userName);
        void RunOnNetworkConnect();
        void RunOnNetworkDisconnect();
        void Cleanup();
    }
}
